<?php

/***
 * 入口类
 * @author jeff liu
 */

if (!defined('ROOT_PATH')) { //没有定义ROOT_PATH变量 禁止访问
    exit('Forbidden Access');

}

if (substr_compare(PHP_VERSION, '5', 0, 1) < 0) { //判断php的版本是不是为php5
    exit('PHP5 is required');
}

include INCLUDE_PATH . '/importer.class.php';

Importer::importFile('core.dispatcher', 'php', ROOT_PATH);


class SimpleMVC
{

    public function __construct($config = array())
    {
        /**
         * 初始化框架
         */
        $this->init($config);


        /**
         * 派发任务
         */
        Dispatcher::dispatch();
    }

    /**
     * 初始化系统
     * @author jeff liu
     * @param array $config 需要载入的config文件列表
     */
    private function init($config = array())
    {

        if (!empty($config['external_libs']) && is_array($config['external_libs'])) {
            foreach ($config['external_libs'] as $lib) {
                if (is_file($lib) && is_readable($lib)) { //如果是一个可读的文件 则执行文件载入工作
                    Importer::importFileByFullPath($lib);
                }
            }
            //end foreach

        }
        //end if


        /**
         * 当前访问的project
         * @var string
         */
        $project = !empty($config['project']) ? $config['project'] : 'frontend';

        /**
         * 当前访问的 app
         * @var string
         */
        $default_app = !empty($config['default_app']) ? $config['default_app'] : 'default';

        /**
         * 当前访问的控制器
         * @var string
         */
        $default_ctl = !empty($config['default_ctl']) ? $config['default_ctl'] : 'default';

        /**
         * 当前访问的action
         * @var string
         */
        $default_act = !empty($config['defaultAct']) ? $config['defaultAct'] : 'index';


        define('PROJECT', $project);
        define('DEFAULT_APP', $default_app);
        define('DEFAULT_CTL', $default_ctl);
        define('DEFAULT_ACT', $default_act);


        Importer::importFile('core.controllers.base', 'ctl.php', ROOT_PATH);

        Importer::importFile('core.models.base', 'model.php', ROOT_PATH);

        /**
         * 加载所有的配置文件
         */
        Importer::importConfigFile(CONFIG_PATH, 'inc.php');
    }

}